﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entidades;
using LogicaNegocio;

namespace PresentacionEscritorio
{
    public partial class frmSolicitudAperturaCaja : Form
    {
        public Empleado EmpResponsable { get; set; }
        public static CajaDiaria cajaTurno;

        public frmSolicitudAperturaCaja()
        {
            InitializeComponent();
        }

        private void lnkTomarHora_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            txtHoraApertura.Text = DateTime.Now.TimeOfDay.ToString();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (validarDatos())
            {
                cajaTurno= new CajaDiaria();
                cajaTurno.Fecha = DateTime.Now.Date;
                cajaTurno.HoraApertura = TimeSpan.Parse(txtHoraApertura.Text);
                cajaTurno.MontoApertura = float.Parse(txtMontoInicial.Text);
                cajaTurno.LegajoEmpleado = EmpResponsable.Legajo;

                GestorCaja gc = new GestorCaja();
                bool res = gc.abrirCaja(cajaTurno);

                if (res)
                {
                    cajaTurno.EstaAbierta = true;
                    cajaTurno.IdCaja = gc.obtenerIdCajaAbierta();
                    
                    ((FormRecepcionista)this.Owner).miCaja = cajaTurno;
                    this.Dispose();
                }
            }
        }

        private bool validarDatos()
        {
            bool res = true;
            string error = "";
            if (string.IsNullOrEmpty(txtHoraApertura.Text))
            {
                res = false;
                error = "Es requerida la hora de apertura de la caja";
            }
            if (string.IsNullOrEmpty(txtMontoInicial.Text))
            {
                res = false;
                error = "Es requerido el monto inicial de la caja";
            }
            else
            {
                double d;
                bool resNro = double.TryParse(txtMontoInicial.Text, out d);
                if (!resNro)
                {
                    res = false;
                    error += "El monto inicial debe ser un valor numérico";
                }
                else if (d < 0)
                {
                    res = false;
                    error += "El monto inicial debe ser un número mayor que cero";
                }

            }

            if (res == false)
            {
                MessageBox.Show(error, "Información", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return res;
        }

        public CajaDiaria obtenerCajaDelTurno()
        {
            return cajaTurno;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
    }
}
